As is known in the art, computer systems which process and store large amounts of data typically include one or more applications (e.g., server applications) in communication with a shared data storage system. The data storage system may include one or more storage devices, usually of a fairly robust nature and useful for storage spanning various temporal requirements, e.g., hard disk drives (HDDs). For example, a storage system may include an array (“storage array”) having a plurality of storage devices with on-board intelligent and communications electronics and software. Within a storage system, storage devices (or partitions therein) are commonly identified using logical unit numbers (LUNs). Applications perform their respective operations using the storage system.
In a data storage environment comprised of combined memory and storage tiering, the ability to define multiple, independent memory tiers is desired. A memory tier is typically constructed by memory mapping a region of a storage class memory (SCM) device or a region of an array storage device into a process' virtual memory address space. Examples of SCM include NAND flash and next generation non-volatile memory (NVM) devices. Memory-mapped regions may be fronted by a DRAM page cache to which an application issues loads and stores. The memory tiering mechanism moves data between the SCM or array device and the DRAM page cache on-demand.